package wli.java.file.util;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

public class DirectoryUtil {
	private ArrayList<FileStructure> list = new ArrayList<FileStructure>();
	private int mm = 0;
	private String base_dir;

	public DirectoryUtil(String dir) {
		base_dir = dir;
	}

	public void showFiles(File[] files) {
		int nn = 0;
		for (File file : files) {
			nn++;
			mm++;
			FileStructure fstu;
			if (file.isDirectory()) {
				//System.out.println(" Path=" + file.getParent());
				fstu = new FileStructure();
				fstu.setUfid((file.getName()+file.getPath()).hashCode()+"");
				fstu.setId(nn);
				fstu.setPid(getDirectoryLevel(file.getPath()));
				fstu.setPath(file.getParent());
				fstu.setIsFile(false);
				fstu.setName(file.getName());
				if(file.list().length>0) {
					fstu.setHasChildren(true);
				}
				else {
					fstu.setHasChildren(false);
				}
				fstu.setUrl(file.toURI());
				fstu.setIsOpen(false);
				list.add(fstu);
				showFiles(file.listFiles());
			} else {
				// System.out.println("File: " + file.getName());
				fstu = new FileStructure();
				fstu.setId(nn);
				fstu.setPid(getDirectoryLevel(file.getPath()));
				fstu.setPath(file.getParent());
				fstu.setIsFile(true);
				fstu.setName(file.getName());
				fstu.setUrl(file.toURI());
				fstu.setDisplyOn(false);
				fstu.setIsOpen(false);
				list.add(fstu);
			}
		}
	}

	public List<FileStructure> getFileStructureList() {
		return list;
	}

	public String getBaseDir() {
		return base_dir;
	}

	public void setBaseDir(String base_dir) {
		this.base_dir = base_dir;
	}
	
	private int getDirectoryLevel(String dir) {
		int count=0;
		for (int i=0; i<dir.length(); i++) {
			if(dir.charAt(i)=='\\') {
				count++;
			}
		}
		return count;
	}
}
